import matplotlib.pyplot as plt
import pandas as pd

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 数据
data = {
    '区域': ['华北', '华南', '东北', '西北', '西南', '华东'],
    '销量': [4321, 1946, 1536, 1872, 1369, 2109],
    '同比去年': [-13.6, -20.8, -9.3, -15.9, -17.9, -5.8]
}

df = pd.DataFrame(data)

# 绘图
fig, ax = plt.subplots(figsize=(12, 6))
bars = ax.barh(df['区域'], df['销量'], color=['#1f77b4', '#1f77b4', '#1f77b4', '#1f77b4', '#1f77b4', '#1f77b4'])

# 添加数据标签和同比去年百分比
for i, bar in enumerate(bars):
    width = bar.get_width()
    ax.text(width - 150,
            bar.get_y() + bar.get_height() / 2,
            f'{width}',
            ha='center',
            va='center',
            color='white',
            fontsize=12)
    ax.text(width + 200,
            bar.get_y() + bar.get_height() / 2,
            f'{df["同比去年"].iloc[i]}%',
            ha='center',
            va='center',
            color='brown',
            fontsize=12)

# 设置背景颜色
fig.patch.set_facecolor('#202a44')
ax.set_facecolor('#202a44')
# 添加标题
plt.title('2021年各区域销量及同比情况', fontsize=24, weight='bold', loc='left', pad=20, color='white')
# 添加子标题
plt.text(0.35, 1.025, '各区域商品销量同比去年均有下降，其中华南下降最多，同比下降20.8%', ha='center', va='center',
         transform=plt.gca().transAxes, fontsize=15, color='white')
# 更改标签颜色
ax.tick_params(colors='white')
ax.xaxis.label.set_color('white')
ax.yaxis.label.set_color('white')
ax.title.set_color('white')

plt.show()
